package org.lys.poi.excel;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
/**
 * @Description:利用POI的Excel工具类
 * @Copyright: 福州骏华信息有限公司 (c)2013
 * @Created Date : 2013-2-16
 * @author lys
 * @vesion 1.0
 */
public class ExcelPOIUtil {
	/**
	 * @Description: 读取单元格中的值
	 * @Create: 2013-2-16 下午3:08:12
	 * @author lys
	 * @update logs
	 * @param cell
	 * @return
	 */
	public static String getCellValue(HSSFCell cell) {
		String value = null;
		if (cell != null) {
			switch (cell.getCellType()) {
			case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
				if (HSSFDateUtil.isCellDateFormatted(cell)) {
					// 如果是date类型则 ，获取该cell的date值
					value = HSSFDateUtil
							.getJavaDate(cell.getNumericCellValue()).toString();
				} else {// 纯数字
					value = String.valueOf(cell.getNumericCellValue());
				}
				break;
			/* 此行表示单元格的内容为string类型 */
			case HSSFCell.CELL_TYPE_STRING: // 字符串型
				value = cell.getRichStringCellValue().toString();
				break;
			case HSSFCell.CELL_TYPE_FORMULA:// 公式型
				// 读公式计算值
				value = String.valueOf(cell.getNumericCellValue());
				if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
					value = cell.getRichStringCellValue().toString();
				}
				break;
			case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔
				value = " " + cell.getBooleanCellValue();
				break;
			/* 此行表示该单元格值为空 */
			case HSSFCell.CELL_TYPE_BLANK: // 空值
				value = "";
				break;
			case HSSFCell.CELL_TYPE_ERROR: // 故障
				value = "";
				break;
			default:
				value = cell.getRichStringCellValue().toString();
			}
		}
		return value;
	}
}
